home *** CD-ROM | disk | FTP | other *** search
- ' OMF ENHANCE version 1.0
- ' by Tim Kilgore [72760,1022]
- ' Written in PDS 7.1 (QBX)
- ' Released into the Public Domain
- ' Sunday, the 3rd of March, 1995
- '
- ' This program is designed for use with Epic's ONE MUST FALL (OMF).
- ' Epic Megagames neither supports or endorses this program.
- '
- ' This program allows the user to easily modify character files (*.CHR)
- ' so that enhancements can be enabled for all robots.
- '
- ' A word of caution. Most 'bots only support an enhancement level of
- ' 2. A few support an enhancement level of 3. If you set the enhancement
- ' level above 3, you do so at your own risk.
- '
- ' Thanks to Ben Sze, David Bollinger, and Craig Landefeld. These guys
- ' indirectly provided me with the information needed to write this program.
- '
-
-
- '$DYNAMIC
- DEFINT A-Z
-
- DECLARE SUB Opener ()
- DECLARE SUB Status (fhandle)
- DECLARE SUB TakeDump (fhandle)
-
- DECLARE FUNCTION Decrypt (holder AS STRING, offset)
- DECLARE FUNCTION GetName$ (fhandle)
-
- 'Decrypt value
- CONST XORVAL = &HAC
-
- 'Offset of name
- CONST NAMEPOS = &H5
-
- 'Enhancements offset, 1 added for BASIC...
- CONST ENHOFFSET = &HA7
-
- COMMON SHARED Robots$(), enhance()
- DIM holder AS STRING * 1
-
- DIM Robots$(10), enhance(10)
-
- 'Read text info from data list
- FOR a = 1 TO 10
- READ Robots$(a)
- NEXT
-
- CLS
- Opener
-
- IF COMMAND$ = "" THEN
- BEEP
- COLOR 7, 0
- PRINT : PRINT "This program is started as: ";
- COLOR 15
- PRINT "ENHANCE filename.chr"
- COLOR 7
- PRINT : PRINT
- END
- ELSE
- file$ = DIR$(COMMAND$)
- IF file$ <> COMMAND$ THEN
- BEEP
- COLOR 7, 0
- PRINT : PRINT "File was not found."
- PRINT : PRINT
- END
- END IF
- END IF
-
- ff = FREEFILE
- OPEN file$ FOR BINARY ACCESS READ WRITE AS #ff
-
- Status (ff)
-
- DO
- 'Get key press
- a$ = UCASE$(INKEY$)
- IF a$ = CHR$(27) OR a$ = "X" THEN EXIT DO
- SELECT CASE a$
- CASE "A" TO "J"
- modified = 1
- 'Get enhancement array item to be modifed
- bot = ASC(a$) - 64
- 'Increment enhancement array
- enhance(bot) = enhance(bot) + 1
- 'Check our bounds, limited to a value of 5 (3 would be safer...)
- IF enhance(bot) > 5 THEN enhance(bot) = 0
- 'Put updated info on the screen
- LOCATE bot + 3, 34
- COLOR 28
- PRINT STR$(enhance(bot))
- END SELECT
- LOOP
-
- IF modified THEN
- LOCATE 17, 1
- COLOR 12
- PRINT "Modifications have been made."
- COLOR 14
- PRINT "Would you like to save these modifications? (";
- COLOR 15
- PRINT "Y";
- COLOR 14
- PRINT "\";
- COLOR 15
- PRINT "n";
- COLOR 14
- PRINT ")"
- DO
- a$ = UCASE$(INKEY$)
- SELECT CASE a$
- CASE CHR$(13), "Y"
- TakeDump ff
- PRINT : PRINT "Your file was saved."
- EXIT DO
- CASE "N"
- EXIT DO
- END SELECT
- LOOP
- END IF
-
- CLOSE
- COLOR 7, 0
- END
-
- DATA Jaguar, Shadow, Thorn, Pyros, Electra
- DATA Katana, Shredder, Flail, Gargoyle, Chronos
-
- REM $STATIC
- FUNCTION Decrypt (holder AS STRING, offset)
-
- Decrypt = (ASC(holder) XOR (XORVAL + (offset - 1))) AND &HFF
-
- END FUNCTION
-
- FUNCTION GetName$ (fhandle)
-
- DIM holder AS STRING * 1
-
- SEEK #fhandle, NAMEPOS
-
- offset = NAMEPOS
- FOR a = 1 TO 16
- GET #fhandle, , holder
- junk$ = CHR$(Decrypt(holder, offset))
- IF junk$ <> CHR$(0) THEN
- work$ = work$ + junk$
- ELSE
- EXIT FOR
- END IF
- offset = offset + 1
- NEXT a
-
- GetName$ = work$
-
- END FUNCTION
-
- SUB Opener
-
- COLOR 14, 1
- PRINT " O M F E n h a n c e ";
- COLOR 9, 0
- PRINT " Version 1.0, by Tim Kilgore [72760,1022]"
- PRINT
- COLOR 7, 0
-
- END SUB
-
- SUB Status (fhandle)
-
- DIM holder AS STRING * 1
-
- COLOR 11
- PRINT "Enhancement info for " + GetName$(fhandle)
-
- SEEK #fhandle, ENHOFFSET
- offset = ENHOFFSET
- FOR a = 1 TO 10
- GET #fhandle, , holder
- enhance(a) = Decrypt(holder, offset)
- COLOR 15
- PRINT TAB(4); CHR$(a + 64);
- COLOR 14
- PRINT ") " + Robots$(a) + " Enhancement Level:";
- COLOR 10
- PRINT TAB(34); STR$(enhance(a))
- offset = offset + 1
- NEXT a
-
- PRINT
- COLOR 14
- PRINT "Press ";
- COLOR 15
- PRINT "A-J ";
- COLOR 14
- PRINT "to modify enhancement levels, ";
- COLOR 15
- PRINT "X ";
- COLOR 14
- PRINT "to exit."
-
- END SUB
-
- SUB TakeDump (fhandle)
-
- DIM holder AS STRING * 1
-
- SEEK #fhandle, ENHOFFSET
- offset = ENHOFFSET
- FOR a = 1 TO 10
- 're-encrypt the data...
- crypt = (enhance(a) XOR (XORVAL + (offset - 1))) AND &HFF
- holder = CHR$(crypt)
- PUT #fhandle, , holder
- offset = offset + 1
- NEXT a
-
- END SUB
-
-